﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;

namespace yule.Common.WCF
{
    /// <summary>
    /// 服务异常
    /// </summary>
    [DataContract]
    public class ServiceException
    {
        private Exception error;

        public ServiceException(Exception error)
        {
            // TODO: Complete member initialization
            this.error = error;
            this.Message = error.Message;
            this.Source = error.Source;
            this.StackTrace = error.StackTrace;
            this.MethodName = error.TargetSite.Name;
        }

        /// <summary>
        /// 摘要:获取描述当前异常的消息。
        /// 返回结果:解释异常原因的错误消息或空字符串 ("")。
        /// </summary>
        [DataMember]
        public string Message { get; set; }

        /// <summary>
        /// 摘要:获取或设置导致错误的应用程序或对象的名称。
        /// 返回结果:导致错误的应用程序或对象的名称。
        /// </summary>
        [DataMember]
        public string Source { get; set; }

        /// <summary>
        /// 摘要:获取调用堆栈上直接帧的字符串表示形式。
        /// 返回结果:用于描述调用堆栈的直接帧的字符串。
        /// </summary>
        [DataMember]
        public string StackTrace { get; set; }

        /// <summary>
        /// 引发异常位置
        /// </summary>
        [DataMember]
        public string MethodName { get; set; }
    }
}